/*
 * VueloDAOImpl.java
 *
 * Created on 20 de noviembre de 2007, 20:53
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package com.fiuba.aterrizar.servidor.dal.dao.impl;

import com.fiuba.aterrizar.servidor.conf.ConnectionFactory;
import com.fiuba.aterrizar.servidor.dal.dao.VueloDAO;
import com.fiuba.aterrizar.servidor.domain.Reserva;
import com.fiuba.aterrizar.servidor.domain.Vuelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Demian
 */
public class VueloDAOImpl implements VueloDAO{
    
    public Vuelo findByCodigo(String codigo) {
        Connection conn = null;
        ConnectionFactory factory = ConnectionFactory.getInstance();
        PreparedStatement stm = null;
        try {
            conn = factory.getConnection();            
            stm = conn.prepareStatement("Select codigo,codigoRutaAerea,codigoAvion,horario,cantidadAsientosPrimera, " +
                                        "cantidadAsientosTurista,cantidadAsientosEjecutiva FROM VUELO where codigo=?");
            stm.setString(1,codigo);            
            
            ResultSet rs = stm.executeQuery();
            if (rs.next()){                                
                Vuelo vuelo = new Vuelo();
                vuelo.setCodigo(rs.getString(1));
                vuelo.setCodigoRutaAerea(rs.getInt(2));
                vuelo.setCodigoAvion(rs.getString(3));
                vuelo.setHorario(rs.getDate(4));
                vuelo.setCantidadAsientosPrimera(rs.getInt(5));
                vuelo.setCantidadAsientosTurista(rs.getInt(6));
                vuelo.setCantidadAsientosEjecutiva(rs.getInt(7));
                
                return vuelo;
            }
            
            return null;
        } catch (SQLException ex) {
            throw new RuntimeException("Error al buscar el vuelo",ex);
        } finally {
            factory.closeStatement(stm);
            factory.closeConnection(conn);
        }
    }

    public void update(Vuelo vuelo) {
        Connection conn = null;
        ConnectionFactory factory = ConnectionFactory.getInstance();
        PreparedStatement stm = null;
        try {
            conn = factory.getConnection();            
            stm = conn.prepareStatement("UPDATE VUELO SET cantidadAsientosPrimera=?,cantidadAsientosTurista=?," +
                                                          "cantidadAsientosEjecutiva=? where codigo=?");
            stm.setInt(1, vuelo.getCantidadAsientosPrimera());
            stm.setInt(2, vuelo.getCantidadAsientosTurista());
            stm.setInt(3, vuelo.getCantidadAsientosEjecutiva());
            stm.setString(4,vuelo.getCodigo());
            
            stm.execute();
        } catch (SQLException ex) {
            throw new RuntimeException("Error al buscar el vuelo",ex);
        } finally {
            factory.closeStatement(stm);
            factory.closeConnection(conn);
        }
    }
    
    
}
